// 创建一个新的请求实例，用新的请求实例来进行请求
import axios from 'axios'
import cookie from "js-cookie";
import router from '@/router';
import qs from "qs"
let baseURL = "/m.api"
import { Message } from 'element-ui';
import Apiadmin from "../api/admin"
import store from '@/store';
import NProgress from 'nprogress'  //引入nprogress插件 进度条
// process.env.NODE_ENV
//development 开发环境
//production  生产环境(build后的代码)
if (process.env.NODE_ENV === "development") {
    //baseURL = "http://192.168.1.188:8080/m.api"; //上线后启用 
} else {
    //baseURL = "http://www.zxwyit.cn:8080/m.api"; //上线后启用
}
//创建新的实例
const instance = axios.create({
    baseURL,   //请求路径
    // timeout: 5000//
    headers: { 'content-type': 'application/x-www-form-urlencoded' }
});

// 添加请求拦截
instance.interceptors.request.use(config => {
    NProgress.start();
    // 在发送请求之前做些什么---添加请求头，添加token
    // console.log("进入了请求拦截器中")
    // console.log(config)
    config.headers['AdminToken'] = cookie.get("AdminToken");
    return config;
}, function (error) {
    // 对请求错误做些什么
    console.error('请求错误', error);
    return Promise.reject(error);
});
// 声明要进行无痛刷新的操作 添加-删除-编辑
let freshen = ['_mt=edit', '_mt=delete', '_mt=create']
// 添加响应拦截器
instance.interceptors.response.use(async function (response) {
    NProgress.done()
    let data = response.data;
    let path = router.currentRoute.fullPath //获取当前页面路由
    if (data.errno == 10006) {
        // 获得接口请求数据
        const port = response.config.data || ''
        var index = freshen.findIndex(item => port.includes(item))
        if (index === -1) { //不需要无痛刷新，需要登录获取令牌
            router.replace({
                path: '/login',
                query: { skip: path }  //把当前路由传到登录页面，下次从哪里退出登录就导航到那个页面
            })
            return
        } else { //需要无痛刷新令牌
            let userInfo = store.state.adminModule.userInfo  //获取状态管理的用户名和密码
            //重新获取令牌
            let res = await Apiadmin.login(userInfo)
            if (res.errno == 200) {
                cookie.set('AdminToken', res.data)  //保存令牌
            } else {
                Message.error(res.errmsg)
                router.replace({ path: "/login", query: { skip: path } })
                return Promise.reject({ errno, errmsg, data });
            }
            //重新发送上次请求
            return instance.request(response.config)
        }
    }
    return data; //对象浅解
}, function (error) {
    NProgress.done()
    // 对响应错误做点什么
    console.error('请求响应错误', error);
    return Promise.reject(error);
});

// get 请求
function get(params) {
    return instance.get('', { params })
}
// post 请求
function post(data, params) {
    // console.log(data)
    return instance.post('', qs.stringify(data), { params })
}

// 照片上传
function $upload(data) {
    return instance.post('../upload/admin', data);
}
// export default instance
export {
    get,
    post,
    $upload


}